package org.jef.socket.websocket;

import org.jef.socket.event.EventType;
import org.jef.socket.msg.IMsg;

import java.io.IOException;
import java.util.List;

/**
 * @version 1.0
 * @description: websocket接口
 * @author: ChengZhi 0336
 * @create: 2024-09-09 20:13
 **/
public interface IWebSocket {

    /**
     * @param msg
     */
    public void sendMessage(IMsg msg);

    /**
     * 发送消息，实现者会根据msg内容自动适配
     * @param event
     * @param msg
     */
    public void send(EventType event, IMsg msg);

    /**
     * 批量发送消息
     * @param event
     * @param msgs
     */
    public void sendBatch(EventType event, List<IMsg> msgs);

    /**
     * 发送个给指定用户
     * @param userId
     * @param msg
     */
    public void sendToUser(String roomId, Long userId, IMsg msg);

    /**
     * 广播给所有用户
     * @param msg
     */
    public void broadcast(IMsg msg) throws IOException;

    public void roomBroadcast(IMsg msg, String roomId);
}
